package com.qijian.flowable.service;

import com.qijian.flowable.domain.vo.IdentityVo;
import com.qijian.flowable.domain.vo.ProcessDefinitionVo;
import org.flowable.engine.repository.ProcessDefinition;

import javax.servlet.http.HttpServletRequest;

/**
 * @author 庄金明
 * @date 2020年3月24日
 */
public interface IProcessDefinitionService {

    /**
     * 查询单一流程定义
     *
     * @param processDefinitionId /
     * @return /
     */
    ProcessDefinition getProcessDefinitionById(String processDefinitionId);

    /**
     * 删除流程定义
     *
     * @param processDefinitionId /
     * @param cascade /
     */
    void delete(String processDefinitionId, Boolean cascade);

    /**
     * 激活流程定义
     *
     * @param vo /
     */
    void activate(ProcessDefinitionVo vo);

    /**
     * 挂起流程定义
     *
     * @param vo /
     */
    void suspend(ProcessDefinitionVo vo);

    /**
     * 导入流程定义
     *
     * @param tenantId /
     * @param request /
     */
    void doImport(String tenantId, HttpServletRequest request);

    /**
     * 保存流程授权
     *
     * @param identityRequest /
     */
    void saveProcessDefinitionIdentityLink(IdentityVo identityRequest);

    /**
     * 删除流程授权
     *
     * @param processDefinitionId /
     * @param identityId /
     * @param type /
     */
    void deleteProcessDefinitionIdentityLink(String processDefinitionId, String identityId, String type);
}
